package com.shyt.dao;


import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;

import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import java.util.List;

@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName(value = "sys_user",schema = "qxglxt")
public class SysUserVo implements Serializable, UserDetails {
        private static final long serialVersionUID = 1L;
        /**
         * 用户编号
         */
        @TableId(value = "id", type = IdType.AUTO)
        private Long id;
        /**
         * 登录名称(用户名)
         */
        private String username;

        private String password;
        /**
         * 真实姓名
         */
        private String realName;
        /**
         * 昵称
         */
        private String nickName;
        /**
         * 所属部门ID
         */
        private String departmentId;
        /**
         * 所属部门名称
         */
        private String departmentName;
        /**
         * 性别(0-男，1-女)
         */
        private Integer gender;
        /**
         * 电话
         */
        private String phone;
        /**
         * 用户头像
         */
        private String avatar;
        /**
         * 邮箱
         */
        private String email;
        /**
         * 是否是管理员(1-管理员)
         */
        private Integer isAdmin;
        /**
         * 创建时间
         */
        private Date createTime;
        /**
         * 修改时间
         */
        private Date updateTime;

        /**
         * 是否删除(0-未删除，1-已删除)
         */
        private Integer isDelete;
        /**
         * 帐户是否过期(1 未过期，0已过期)
         */
        private boolean isAccountNonExpired = true;
        /**
         * 帐户是否被锁定(1 未过期，0已过期)
         */
        private boolean isAccountNonLocked = true;
        /**
         * 密码是否过期(1 未过期，0已过期)
         */
        private boolean isCredentialsNonExpired = true;
        /**
         * 帐户是否可用(1 可用，0 删除用户)
         */
        private boolean isEnabled = true;
        /**
         * 权限列表
         */
        @TableField(exist = false)
        Collection<? extends GrantedAuthority> authorities;
        /**
         * 查询用户权限列表
         */
        @TableField(exist = false)
        private List<SysPermissionVo> permissionList;

        private List<UserLabelVo> roles;
    }
